Asynchronous Data Fetching Techniques

Microsoft Technologies - লিংক (LinQ) LINQ এবং অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং (LINQ with Asynchronous Programming) |
213
213

অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং একটি শক্তিশালী কৌশল যা আপনাকে ডেটা সংগ্রহ এবং প্রসেসিং করতে সহায়তা করে, তাও মূল থ্রেড ব্লক না করে। যখন ডেটা বাইরে থেকে (যেমন ডেটাবেস, API, বা ফাইল সিস্টেম থেকে) আনা হয়, তখন অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং কার্যকরী হতে পারে, কারণ এটি ইউজার ইন্টারফেসের সাড়া দেয়ার ক্ষমতা বাড়ায় এবং প্রোগ্রামের পারফরম্যান্স উন্নত করে।

এখানে কিছু কার্যকরী অ্যাসিঙ্ক্রোনাস ডেটা ফেচিং টেকনিক্স দেওয়া হলো, যেগুলি C#-এ async এবং await ব্যবহার করে বাস্তবায়ন করা যায়।


async এবং await ব্যবহার করে অ্যাসিঙ্ক্রোনাস ডেটা ফেচিং

C#-এ async এবং await কীওয়ার্ড ব্যবহার করে আপনি অ্যাসিঙ্ক্রোনাস অপারেশন সহজভাবে পরিচালনা করতে পারেন। যখন ডেটা বাইরে থেকে আসে এবং অপারেশন দীর্ঘ হতে পারে, তখন অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং মূল থ্রেডকে ব্লক না করে সেই ডেটা প্রক্রিয়া করে।

বেসিক অ্যাসিঙ্ক্রোনাস ডেটা ফেচিং উদাহরণ:

public async Task<List<string>> GetDataFromApiAsync()
{
    // অ্যাসিঙ্ক্রোনাস API কল সিমুলেট করা
    HttpClient client = new HttpClient();
    var response = await client.GetStringAsync("https://api.example.com/data");

    // ডেটা প্রক্রিয়া এবং ফেরত পাঠানো
    return JsonConvert.DeserializeObject<List<string>>(response);
}

এখানে:

  • GetDataFromApiAsync() মেথডটি async হিসেবে চিহ্নিত করা হয়েছে।
  • await কিওয়ার্ড ব্যবহার করা হয়েছে যাতে API থেকে রেসপন্স আসার পর পরবর্তী কোড এক্সিকিউট হয়, কিন্তু থ্রেড ব্লক না হয়ে কাজ চালিয়ে যায়।
  • API থেকে পাওয়া ডেটা প্রক্রিয়া করে লিস্টে রূপান্তরিত হচ্ছে।

অ্যাসিঙ্ক্রোনাস ফাইল অপারেশন

ফাইল পড়া এবং লেখার জন্য অ্যাসিঙ্ক্রোনাস মেথড ব্যবহার করা যেতে পারে, যাতে ইউজার ইন্টারফেস ব্লক না হয়। দীর্ঘ ফাইল অপারেশন অ্যাসিঙ্ক্রোনাসভাবে পরিচালনা করলে অ্যাপ্লিকেশন আরও প্রতিক্রিয়া সাপেক্ষ হয়।

উদাহরণ: অ্যাসিঙ্ক্রোনাস ফাইল পড়া

public async Task<string> ReadFileAsync(string filePath)
{
    using (StreamReader reader = new StreamReader(filePath))
    {
        return await reader.ReadToEndAsync();
    }
}

এখানে:

  • ReadToEndAsync() একটি অ্যাসিঙ্ক্রোনাস মেথড যা ফাইলের সমস্ত কন্টেন্ট এক্সট্র্যাক্ট করে এবং থ্রেড ব্লক না হয়ে এই কাজটি সম্পন্ন হয়।

Task.WhenAll ব্যবহার করে প্যারালাল ডেটা ফেচিং

যখন একাধিক উৎস থেকে ডেটা অ্যাসিঙ্ক্রোনাসভাবে সংগ্রহ করতে হয় (যেমন, একাধিক API বা সার্ভিস), তখন Task.WhenAll() ব্যবহার করে একাধিক অ্যাসিঙ্ক্রোনাস অপারেশন একসাথে চালানো যায়। এটি সময় সাশ্রয়ী এবং কার্যকরী হয়।

উদাহরণ: একাধিক API থেকে অ্যাসিঙ্ক্রোনাস ডেটা সংগ্রহ

public async Task FetchDataFromMultipleApisAsync()
{
    var api1Task = GetDataFromApiAsync("https://api.example1.com");
    var api2Task = GetDataFromApiAsync("https://api.example2.com");

    await Task.WhenAll(api1Task, api2Task); // দুইটি অ্যাসিঙ্ক্রোনাস টাস্ক একসাথে চালানো

    var dataFromApi1 = api1Task.Result;
    var dataFromApi2 = api2Task.Result;

    // ডেটা প্রক্রিয়া
}

এখানে:

  • Task.WhenAll() ব্যবহার করে একসাথে দুইটি অ্যাসিঙ্ক্রোনাস অপারেশন চালানো হয়েছে।
  • await নিশ্চিত করে যে দুটি টাস্ক সম্পন্ন হওয়ার পরই ফলাফল পাওয়া যাবে।

Entity Framework দিয়ে অ্যাসিঙ্ক্রোনাস ডেটাবেস কোয়েরি

ডেটাবেসের সাথে কাজ করার সময় অ্যাসিঙ্ক্রোনাস অপারেশন ব্যবহার করা খুবই গুরুত্বপূর্ণ। এটি ডেটাবেসের সাথে যোগাযোগ করার সময় সিস্টেমের পারফরম্যান্সকে উন্নত করে এবং মূল থ্রেডকে ব্লক হতে বাধা দেয়।

উদাহরণ: অ্যাসিঙ্ক্রোনাস ডেটাবেস কোয়েরি

public async Task<List<Product>> GetProductsAsync()
{
    using (var context = new ApplicationDbContext())
    {
        return await context.Products.ToListAsync(); // অ্যাসিঙ্ক্রোনাসভাবে ডেটা সংগ্রহ
    }
}

এখানে:

  • ToListAsync() একটি অ্যাসিঙ্ক্রোনাস মেথড যা Entity Framework থেকে ডেটা অ্যাসিঙ্ক্রোনাসভাবে সংগ্রহ করে।
  • await নিশ্চিত করে যে ডেটা ফেচ হওয়ার পর পরবর্তী কোড এক্সিকিউট হবে।

Cancellation Token ব্যবহার করে দীর্ঘ-running অ্যাসিঙ্ক্রোনাস অপারেশন থামানো

অ্যাসিঙ্ক্রোনাস অপারেশন কখনও কখনও দীর্ঘ সময় নিতে পারে। কখনও কখনও ইউজার চাইতে পারে যে, যদি অপারেশন খুব দীর্ঘ হয় বা আগের থেকে বাতিল করতে হয়, তখন সেক্ষেত্রে CancellationToken ব্যবহার করা যেতে পারে।

উদাহরণ: অ্যাসিঙ্ক্রোনাস অপারেশন ক্যানসেল করা

public async Task<string> GetDataWithCancellationAsync(CancellationToken cancellationToken)
{
    HttpClient client = new HttpClient();

    // ক্যানসেলেশন সাপোর্ট সহ অ্যাসিঙ্ক্রোনাস রিকোয়েস্ট
    var response = await client.GetStringAsync("https://api.example.com/data", cancellationToken);

    return response;
}

এখানে:

  • CancellationToken ব্যবহার করে অ্যাসিঙ্ক্রোনাস অপারেশন বাতিল করার সুযোগ পাওয়া যায়।
  • ক্যানসেল হলে অপারেশন তৎক্ষণাত থামানো যাবে এবং এভাবে অ্যাপ্লিকেশন বা ইউজার এক্সপিরিয়েন্সে সমস্যা হবে না।

অ্যাসিঙ্ক্রোনাস অপারেশনগুলোতে ত্রুটি পরিচালনা

অ্যাসিঙ্ক্রোনাস অপারেশনে যেমন API কল বা ডেটাবেস এক্সিকিউশন, তেমনই ত্রুটিও হতে পারে। এই কারণে, অ্যাসিঙ্ক্রোনাস কোডে ত্রুটি পরিচালনা খুবই গুরুত্বপূর্ণ। C#-এ try-catch ব্লক ব্যবহার করে ত্রুটি হ্যান্ডলিং করা যায়।

উদাহরণ: অ্যাসিঙ্ক্রোনাস ডেটা ফেচিংয়ে ত্রুটি পরিচালনা

public async Task<string> FetchDataWithErrorHandlingAsync()
{
    try
    {
        HttpClient client = new HttpClient();
        var response = await client.GetStringAsync("https://api.example.com/data");

        return response;
    }
    catch (HttpRequestException ex)
    {
        // নেটওয়ার্ক-সংক্রান্ত ত্রুটি হ্যান্ডলিং
        Console.WriteLine("Error fetching data: " + ex.Message);
        return null;
    }
}

এখানে:

  • try-catch ব্লক ব্যবহার করা হয়েছে যাতে অ্যাসিঙ্ক্রোনাস অপারেশনে কোনো ত্রুটি ঘটলে তা সঠিকভাবে হ্যান্ডল করা যায়।

সারাংশ

অ্যাসিঙ্ক্রোনাস ডেটা ফেচিং কৌশলগুলি C#-এ কার্যকরভাবে ডেটা সংগ্রহ এবং প্রসেসিংয়ের জন্য ব্যবহৃত হয়। async এবং await ব্যবহার করে ডেটাবেস, API বা ফাইল থেকে ডেটা আনা যায় থ্রেড ব্লক না করে। এটি অ্যাপ্লিকেশনকে আরো প্রতিক্রিয়া সাপেক্ষ এবং দক্ষ করে তোলে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion